Computing devices may communicate with other computing devices via connections over networks for a variety of reasons. For example, a user of a computing device may wish to obtain data from a server to perform computations or obtain audio or video content. In other instances, a user may wish to engage in an interactive application with a user of another computer or a program executing on a server or other device accessible over the network. The quality of service provided by the network can have a significant impact on the user's experience.
Tools to measure network performance are known. For example, network engineers frequently use traffic simulators and other types of test equipment to assess performance of a network or individual components within the network. Such tools can simulate network traffic generated by large numbers of users to test the network behavior under many operating conditions. Traffic analyzers are also known and may be used to perform test functions by detecting and analyzing messages being conveyed by a network. These powerful tools may also be programmed to perform other test-related functions.
Less powerful tools that run on an individual computer are also known. Tools such as a network “Ping” can be used to test connections. Additionally, many computers equipped for network communication also include components that perform limited performance monitoring as part of implementing certain network protocols or adapting network protocols for specific operating conditions. For example, some wireless protocols allow communication at different data rates. Computers communicating according to these protocols may detect and adapt to network conditions by changing the data rate in use.